In many web applications, the front-end is programmed using a different language than the back-end. For example, in business applications with web interfaces, the front-end code implementing the client-side business logic may be written, e.g., in JavaScript, Dart, CoffeeScript, or TypeScript, and the back-end code executing the server-side business application logic (e.g., by accessing a database and processing the data retrieved therefrom) may be implemented in Java or a business-application-specific language. Debugging such programs may involve the use of, and frequent switching between, two separate debuggers for the front-end and the back-end. A developer may, for instance, step through the front-end code using a debugger integrated into a web browser (e g, running on a client computer) and, upon reaching a line of code that includes a request sent to the back-end, manually identify the portion of back-end code servicing the request and debug that portion, e.g., by placing a break-point therein, with a debugger specific to the programming language of the back-end (which may be running, e.g., on an application server remotely accessed by the client computer). Thereafter, debugging of the front-end may be resumed; in some cases, this involves re-starting the program. This process is often cumbersome and takes up valuable developer time.